package com.zr.service;

import java.util.ArrayList;

import com.zr.model.Content;
import com.zr.model.Type;

import net.sf.json.JSONObject;

/**
 * 对content表相关的服务
 * @author lf
 *
 */
public interface ContentService {

	/**
	 * 获取所有知识的部分信息
	 * @return 以表格的json数据格式输出
	 */
	public JSONObject getAllCurrent();
	
	/**
	 * 根据分页显示数据
	 * @param page 页码
	 * @param pageSize 每页的记录数
	 * @return 该页的记录的json格式
	 */
	public JSONObject getCurrentContentByLimit(int page,int pageSize);
	
	/**
	 * 根据查询获取对应的记录
	 * @param title 知识标题
	 * @param center 知识内容
	 * @param startDate 发布日期
	 * @param endDate 发布日期
	 * @param state 状态
	 * @return 符合条件的记录数的json格式的表格数据
	 */
	public JSONObject getContentBySearch(String title,String center,String startDate,String endDate,String state,int page,int pageSize);
	
	/**
	 * 根据知识类型获取本页的记录
	 * @param cname 知识类型
	 * @param page 页码
	 * @param pageSize 每页数目
	 * @return 该页的记录
	 */
	public JSONObject getContentByCname(String cname,int page,int pageSize);
	
	/**

	 * 根据cid获取知识内容

	 * @param cid 所需知识内容的id

	 * @return 含有所需知识内容的Content对象

	 */
	public Content getContentByCid(int cid);
	
	/**

	 * 通过已有的知识内容的cname获得相关知识内容游览量前十的Content

	 * @param cname 已有知识内容的cname

	 * @return 相关Content游览量前十的知识内容

	 */
	public ArrayList<Content> getRelevantContentByCname(String cname,int cid);
	
	/**
	 * 获取知识内容游览量前五的信息
	 * @return 包含5个content对象的集合
	 */
	public ArrayList<Type> getMaxNumberContent();
	
	/**
	 *  添加新content
	 * @param title Content标题
	 * @param abstract1 Content摘要
	 * @param type Content所属类型
	 * @param file Content内容
	 * @param special Content所属专题
	 */
	public void addContent(String title,String abstract1,String type,String file,String special);
	
	/**
	 * 通过cname获取对应的记录数
	 * @param cname
	 * @return 记录数 ,chart.js的格式
	 */
	public String getData();
	
	/**
	 * 逻辑删除Content
	 * @param cid 选中的cid数组
	 */
	public void deleteConten(int[] cid);

	/**
	 * 通过传入的操作类型做出服 务
	 * @param operation 操作类型，修改，删除
	 * @param cid 知识id
	 * @return 是否成功
	 */
	public boolean updateContentStateByCid(int cid);

}
